#socket
#服务器端
import socket
#1.创建socket对象
socket_server = socket.socket()

#2.绑定socket_server到指定IP和地址
socket_server.bind(("localhost",8888))

#3.服务器端开始监听端口
socket_server.listen(1)
#listen方法接收一个整数传参数，表示接受的链接数量

#4.接收客户端连接，获得连接对象
# result = socket_server.accept()
# conn = result[0]
# address = result[1]
conn,address = socket_server.accept()
#accept方法返回二元元组(链接对象，客户端地址信息)
#accept方法，是阻塞方法
print(f"接收到了客户端链接，客户端信息是:{address}")
while True:
    #5.客户端连接后，通过recv方法，接收客户端发送的消息
    data:str = conn.recv(1024).decode("UTF-8")
    #recv接收的参数是缓冲区大小
    #recv方法返回值是一个字节数组也就是bytes对象，不是字符串，可通过decode方法通过utf-8编码，将字节数组转化为字符串
    print(f"客户端发来的消息是:{data}")

    #6.通过conn，调用send方法回复消息
    msg = input("输入回复客户端的消息:")#encode可以将字符串编码为字节数组
    if msg == 'exit':
        break
    conn.send(msg.encode("UTF-8"))

#7.conn和socket_server对象调用close方法，关闭连接
conn.close()
socket_server.close()